/*
 * Source code written by Tácio S. Diogo.
 * Email: taciosd@gmail.com
 * Any copy or use without permission is prohibited.
 */
package app.agentes;

import app.comportamentos.IniciarEleicoes;
import app.comportamentos.JulgarProcessos;
import app.modelo.Propaganda;
import app.normas.NormaTipoPropaganda;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
 *
 * @author Tácio S. Diogo
 */
public class JuizTse extends Agente {
    
    public static final double ETICA_ASSUMIR_CULPA = 0.9;
    public static final int PERIODO_SIMULACAO = 2;
    private Calendar dataInicioSimulacao;
    private Calendar dataFimSimulacao;
    
    private NormaTipoPropaganda norma = null;
      
    public JuizTse() {
        
        norma = new NormaTipoPropaganda(0.3);
    }
    
    @Override
    protected void setup() {
        setConscienciaPolitica(CONSCIENCIA_MAXIMA);
        setEtica(ETICA_MAXIMA);
        
        addBehaviour(new IniciarEleicoes(this));
        addBehaviour(new JulgarProcessos(this));
    }
    
 
    public void setDataInicioSimulacao(Calendar dataInicioSimulacao) {
        this.dataInicioSimulacao = dataInicioSimulacao;
        dataFimSimulacao = (Calendar) dataInicioSimulacao.clone();
        dataFimSimulacao.add(Calendar.MINUTE, PERIODO_SIMULACAO);
    }

    public Calendar getDataInicioSimulacao() {
        return dataInicioSimulacao;
    }

    public Calendar getDataFimSimulacao() {
        return dataFimSimulacao;
    }
    
    public boolean verificarNormaAplicaReu(Agente agente){
        return norma.ehAplicadaADenunciado(agente);
    }
    
    public double obterPoderNorma(Propaganda.TIPO_PROPAGANDA tipo){
        return norma.obterPoderNorma(tipo);
    }
}
